//
// Description: 5831. 你可以工作的最大周数
// Created by Loading on 2021/8/1.
//

#include <bits/stdc++.h>

using namespace std;

long long numberOfWeeks(vector<int> &milestones) {
    // 耗时最长的任务
    long long task_max = *max_element(milestones.begin(), milestones.end());
    // 任务总时间
    long long sum;
    /* 使用 accumulate 时，init 值要设置为 0LL，而非 0，否则会溢出 */
    sum = accumulate(milestones.begin(), milestones.end(), 0LL);
//    sum = 0;
//    for (auto &x : milestones) {
//        sum += x;
//    }
    // 耗时最长的任务时间 <= 剩余任务时间 + 1，说明所有任务都可以完成
    if (task_max <= sum - task_max + 1) {
        return sum;
    } else {
        // 否则，无法完成耗时最长的工作，只能完成 剩余任务的两倍 + 1，因为耗时最长的任务可以多做一个
        return (sum - task_max) * 2 + 1;
    }
}

int main() {
    vector<int> milestones = {5, 2, 1};

    cout << numberOfWeeks(milestones) << endl;
}